/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Email extends Root {

    private int id;
    private String texto;
    private String asunto;
    private Session session;
    //Representa el correo desde el cual se enviara el email.
    private String correoRemitente;
    // Representa la clave del correo
    private String clave;
    //correo representa el destino del correo
    private String correo;
    Message msg;
    private String textoFinal = "\n\nEste es un correo generado automaticamente por el sistema, "
            + "recomendamos estrictamente no responder a este correo";

    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

    public String getCorreoRemitente() {
        return correoRemitente;
    }

    public void setCorreoRemitente(String correoRemitente) {
        this.correoRemitente = correoRemitente;
    }

    public String getTextoFinal() {
        return textoFinal;
    }

    public void setTextoFinal(String textoFinal) {
        this.textoFinal = textoFinal;
    }

    public String getAsunto() {
        return asunto;
    }

    public void setAsunto(String asunto) {
        this.asunto = asunto;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Message getMsg() {
        return msg;
    }

    public void setMsg(Message msg) {
        this.msg = msg;
    }

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public String enviar(String[] correos) {
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {

                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(getCorreoRemitente(), getClave());
                    }
                });

        try {
            for (String correo : correos) {
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(getCorreoRemitente()));
                message.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse(correo));
                message.setSubject(getAsunto());
                message.setText(getTexto() + getTextoFinal());
                System.out.println("estoy enviando ... . .");
                Transport.send(message);
                System.out.println("Done");
            }
            return "Valido";
        } catch (MessagingException e) {
            e.printStackTrace();
            System.out.println("EXCEPCION!!!!");
            return "Invalido";
        }
    }

    public void cloneWith(Email p) {
        setCorreoRemitente(p.getCorreoRemitente());
        setClave(p.getClave());
    }
}